"""
@author: xiaoyang
@file: 2023-04-14-面向对象-猜拳游戏.py
@time: 2023/4/15 15:11
"""
import pickle
#猜拳游戏
#用户可以创建房间，加入房间
#加入房间之后，房间里面要等于两个人，这个房间里面的人就可以开始游戏了
#两个人互相猜拳，按任意键A，B两个人随机出剪刀石头布。输的人扣100金豆。
#直到金豆输完了，或者是按了q键退出

#房间类
 #属性
  #房间id
  #房间里面的人 -- []
 #方法
  #进入房间
  #退出房间

#用户类
 #属性
  #用户id
  #金豆
  #属于哪个房间
 #方法
  #猜拳

class Room:
    def __init__(self, roomid):
        self.roomid = roomid
        self.roompeople = []

        #进入房间
    def enter_room(self):
        pass


class User:
    def __init__(self, name, passwd, gold):
        self.name = name
        self.passwd = passwd
        self.gold = gold
        self.userdict = {}

        #注册用户

    def register(self, user):
        if name not in self.userdict:
            # 把名字作为key user对象作为value 存在self.userdict里面
            # {"sc":user对象}
            # user = User(name, passwd, gold)
            self.userdict[name] = user
            # 写入文件    pickle包直接写入，自带的包不需要安装
            file_name = "user.pickle"
            with open(file_name, "wb") as fp:
                pickle.dump(self.userdict, fp)
        else:
            print("用户已经存在，请直接登录")

        #登录
    def login(self, name, passwd):
        if name in self.userdict and passwd == self.userdict[name].passwd:
            print(f"登陆成功！剩余金豆{self.userdict[name].gold}")
        else:
            print("登陆失败！")


room1 = Room("房间一")
room2 = Room("房间二")
room = [room1, room2]
print("欢迎进入猜拳游戏".center(50, "*"))


while 1 :
    print("1.注册\n2.登录")
    a = input("请输入你的选择(按q退出)：")

    if a == "1":
        name, passwd, gold = input("请输入名字，密码，初始金豆（用空白分隔）：").split()
        # 实例化User类
        user = User(name, passwd, gold)
        #类方法只能在实例化之后才能调用
        user.register(user)
        print(f"当前系统已有游戏用户{user.userdict}")

    elif a == "2":
        while 1 :
            name, passwd = input("请输入你的用户名，密码（用空白分割）:").split()
            user.login(name, passwd)
            print("1.查看房间\n2.创建房间\n3.进入房间")
            a1 = input("请输入你的选择：")
            if a1 == "1":
                print("当前已有如下房间".center(20, " "))
                for k, v in enumerate(room):
                    print(f"{k}.{v.roomid}".center(20, "#"))

            elif a1 == "2":
                a2 = input("请输入你想创建的房间名字 ：")
                room3 = Room(a2)
                room.append(room3)
                print("当前已有如下房间".center(20, " "))
                for k, v in enumerate(room):
                    print(f"{k}.{v.roomid}".center(20, "#"))

            elif a1 == "3":
                a3 = input("请输入你想进入的房间名：")

            elif a1 == "q":
                break

        else:
            print("输入有误，请重新输入！")


    elif a == "q":
        break

    else:
        print("输入有误，请重新输入！")
